home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // FilmAffinity v1.0 by aviloria
-
- (***************************************************
- * Author: aviloria (aviloria@yahoo.com) *
- * Script for the importation of pictures from *
- * http://www.filmaffinity.com *
- * *
- * For use with Ant Movie Catalog 3.4.0 *
- * www.antp.be/software/moviecatalog *
- * *
- * The source code of the script can be used in *
- * another program only if full credits to *
- * script author and a link to Ant Movie Catalog *
- * website are given in the About box or in *
- * the documentation of the program *
- ***************************************************)
-
-
- program FilmAffinity;
-
- const
- SearchBaseURL = 'http://www.filmaffinity.com/es/res.php?stext=';
- SearchPostFix = '&stype=all';
- BaseURL1 = 'http://www.filmaffinity.com/es/';
- BaseURL2 = 'http://www.filmaffinity.com';
-
- var
- MovieName: string;
- MovieURL: string;
- //------------------------------------------------------------------------------------
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- Result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- Result := i;
- Break;
- end;
- end;
- //------------------------------------------------------------------------------------
-
- function TextBetween(var S: string; StartTag: string; EndTag: string): string;
- var
- InitialPos: Integer;
- begin
- InitialPos := Pos(StartTag, S);
- Delete(S, 1, InitialPos + Length(StartTag) - 1);
- InitialPos := Pos(EndTag, S);
- result := copy(S, 1, InitialPos - 1);
- Delete(S, 1, InitialPos + 1);
- end;
- //------------------------------------------------------------------------------------
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- Line: string;
- MovieTitle, MovieAddress: string;
-
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- if Pos('<title>FilmAffinity', Page.Text) = 0 then
- begin
- ShowMessage('No se ha podido establecer la conexion.');
- end else
- begin
- LineNr := FindLine('<td class="tt1" align="center">Resultados por Título</td>', Page, 0);
- LineNr := LineNr + 7;
- Line := Page.GetString(LineNr);
- if Pos ('No se han encontrado coincidencias', Line) <> 0 then
- begin
- ShowMessage('No se han encontrado resultados para "' + MovieName + '"');
- end else
- begin
- PickTreeClear;
- Line := TextBetween (Line, '<b>', '</b>');
- PickTreeAdd('Encontrados ' + Line + ' resultados para "' + MovieName + '"', '');
-
- LineNr := LineNr + 9;
- Line := Page.GetString(LineNr);
- repeat
- MovieAddress := TextBetween (Line, '<a href="', '">');
- MovieTitle := TextBetween (Line, '<span class="ntext">', '</span>');
- HTMLDecode(Movietitle);
- PickTreeAdd(MovieTitle, BaseURL1 + MovieAddress);
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- until Pos('</ol>', Line) > 0;
-
- if PickTreeExec(Address) then
- AnalyzeMoviePage(Address);
- end;
- end;
- Page.Free;
- end;
- //------------------------------------------------------------------------------------
-
- procedure AnalyzeMoviePage(Address: string);
- var
- Page: TStringList;
- LineNr, aux: Integer;
- Line: string;
- Item: string;
- Comments: string;
- Actors: string;
- Description: string;
-
- begin
- Comments := '';
- Actors := '';
- Description := '';
-
- // URL
- SetField(fieldURL, Address);
-
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
-
- // Translated Title
- LineNr := FindLine('<td align="center" class="tt1">', Page, 0);
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td align="center" class="tt1">', ' <img src=');
- HTMLDecode(Item);
- SetField(fieldTranslatedTitle, Trim (Item));
-
- LineNr := LineNr + 8;
- Line := Page.GetString(LineNr);
-
- // Original Title
- if Pos ('TITULO ORIGINAL', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td class="ntext">', '</td>');
- HTMLDecode(Item);
- SetField(fieldOriginalTitle, Trim (Item));
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- end;
-
- // Picture
- if Pos ('owned by Studio', Line) > 0 then
- begin
- Item := TextBetween (Line, '<img src="', '" >');
- GetPicture (BaseURL2 + Item, False);
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Year
- if Pos ('AÑO', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td class="ntext">', '</td>');
- HTMLDecode(Item);
- SetField(fieldYear, Trim (Item));
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Length
- if Pos ('DURACIÓN', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td class="ntext">', '</td>');
- HTMLDecode(Item);
- aux := Pos (' min', Item);
- if aux > 0 then
- Delete (Item, aux, aux + 3);
- SetField(fieldLength, Trim (Item));
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Country
- if Pos ('PAÍS', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, 'alt="', '">');
- HTMLDecode(Item);
- SetField(fieldCountry, Trim (Item));
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Director
- if Pos ('DIRECTOR', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '&stype=dir">', '</a>');
- HTMLDecode(Item);
- SetField(fieldDirector, Trim (Item));
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Script writer
- if Pos ('GUIÓN', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td class="ntext">', '</td>');
- Comments := Comments + 'Guión: ' + Item + #13#10;
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Musician
- if Pos ('MUSICA', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td class="ntext" >', '</td>');
- Comments := Comments + 'Música: ' + Item + #13#10;
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Photography
- if Pos ('FOTOGRAFÍA', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<td class="ntext" >', '</td>');
- Comments := Comments + 'Fotografía: ' + Item + #13#10;
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Actors
- if Pos ('REPARTO', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Actors := Actors + TextBetween (Line, '&stype=rep">', '</a>') + #13#10;
- while Pos ('&stype=rep"> ', Line) > 0 do
- Actors := Actors + TextBetween (Line, '&stype=rep"> ', '</a>') + #13#10;
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Productor
- if Pos ('PRODUCTORA', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Comments := Comments + 'Productora: ' + TextBetween (Line, '<td class="ntext" colspan="2">', '</td>') + #13#10;
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Genere & Critic
- if Pos ('GÉNERO Y CRÍTICA', Line) > 0 then
- begin
- Line := Copy (Page.Text, 1, Length (Page.Text));
- Line := StringReplace(Line, '<br />', #13#10);
- Line := TextBetween (Line, 'GÉNERO Y CRÍTICA', '</tr>');
- Description := TextBetween (Line, '<td class="ntext" colspan="2">', '</td>');
- LineNr := FindLine('WEB OFICIAL', Page, LineNr);
- Line := Page.GetString(LineNr);
- end;
-
- // Official Webpage
- if Pos ('WEB OFICIAL', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Comments := Comments + 'Web oficial: ' + TextBetween (Line, '<a href="', '" target="_blank">') + #13#10;
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- // Rating
- if Pos ('PUNTUACIÓN MEDIA', Line) > 0 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- Item := TextBetween (Line, '<b>', '</b>');
- HTMLDecode(Item);
- if Length(Item) = 3 then
- begin
- Item := IntToStr(Round(StrToInt(StrGet(Item, 1), 0) + (StrToInt(StrGet(Item, 3), 0) / 10)));
- end else
- begin
- Item := IntToStr(Round(StrToInt(StrGet(Item, 1), 0)));
- end;
- SetField(fieldRating, Item);
- LineNr := LineNr + 3;
- Line := Page.GetString(LineNr);
- end;
-
- HTMLDecode(Comments);
- SetField(fieldComments, Comments);
- HTMLDecode(Actors);
- SetField(fieldActors, Actors);
- HTMLDecode(Description);
- SetField(fieldDescription, Description);
-
- DisplayResults;
- end;
- //------------------------------------------------------------------------------------
- //------------------------------------------------------------------------------------
-
- begin
- if CheckVersion(3,4,0) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('Importar de FilmAffinity', 'Introduzca el titulo de la pelicula:', MovieName) then
- begin
- AnalyzePage(SearchBaseURL + UrlEncode(MovieName) + SearchPostfix);
- end;
- end
- else
- ShowMessage('Este script requiere una version mas reciente de Ant Movie Catalog (por lo menos la version 3.4.0)');
- end.
-